1
บทเรียนที่ 7: การแนะนำโมดูลภาษาพายธอน
EvoClass-AI001Lecture 7
00:00

การแนะนำโมดูลภาษาพายธอน

ในภาษาพายธอน โมดูลคือโมดูล ไฟล์ที่สิ้นสุดด้วย.py ซึ่งทำหน้าที่เป็นตัวเก็บชุดโค้ดที่สามารถนำกลับมาใช้ใหม่ได้ (ฟังก์ชัน คลาส และตัวแปร) โมดูลเป็นหัวใจสำคัญของสถาปัตยกรรมโปรแกรมขนาดใหญ่ ช่วยให้นักพัฒนาจัดการความซับซ้อนและปรับปรุงการบำรุงรักษ์โค้ดโดยการแยกคำจำกัดความอย่างมีเหตุผล กระบวนการนี้คล้ายกับวิธีที่แนวคิดทางคณิตศาสตร์ถูกแบ่งออกเป็นสาขาเฉพาะ (เช่น $f(x)$ ถูกกำหนดไว้ในโดเมน $D$ ที่เฉพาะเจาะจง)

1. วัตถุประสงค์ของโมดูล

โมดูลตอบสนองต่อความต้องการหลักสามประการในการพัฒนา:

  • ส่งเสริมการนำโค้ดไปใช้ซ้ำในโปรเจกต์หลาย ๆ โครงการ โดยไม่ต้องเขียนคำจำกัดความใหม่
  • สร้างความชัดเจนและความเป็นระเบียบโดยการแบ่งโปรแกรมขนาดใหญ่ออกเป็นไฟล์ที่จัดการได้และมีความเกี่ยวข้องกัน
  • ป้องกันการชนกันของชื่อโดยการกำหนดพื้นที่ชื่อแยกต่างหากสำหรับฟังก์ชันและตัวแปร

ตัวอย่างเชิงแนวคิด:

ลองนึกภาพว่ามีไฟล์ชื่อutility.py ที่มีฟังก์ชันสำหรับคำนวณผลลัพธ์ทางคณิตศาสตร์ ไฟล์ทั้งหมดนี้คือโมดูล และฟังก์ชันเหล่านั้นคือเนื้อหาที่เข้าถึงได้

2. วิธีการนำเข้า

คำสั่ง import ทำให้คำจำกัดความภายนอกพร้อมใช้งานในสคริปต์ปัจจุบัน วิธีที่เลือกจะกำหนดวิธีการเข้าถึงองค์ประกอบและผลกระทบต่อพื้นที่ชื่อ (namespace) ของโปรแกรมปัจจุบัน

  • การนำเข้าแบบมาตรฐาน:import module_name. จำเป็นต้องเข้าถึงเนื้อหาโดยใช้module_name.function().
  • การนำเข้าแบบเฉพาะเจาะจง:from module import function. อนุญาตให้ใช้งานได้ทันทีโดยไม่ต้องมีคำนำหน้าโมดูลfunction() โดยไม่มีคำนำหน้าโมดูล
  • การนำเข้าด้วยชื่อเล่น:import module as alias. ให้ชื่อเล่นที่สั้นกว่าและเฉพาะโปรเจกต์เพื่อความสะดวก (เช่น import numpy as np)
โฟกัสที่ไลบรารีมาตรฐาน
ภาษาพายธอนมีไลบรารีมาตรฐานที่ครอบคลุมอย่างมากไลบรารีมาตรฐาน ของโมดูลที่มีอยู่แล้ว (เช่น 'os', 'sys', 'random', 'math') การเรียนรู้การใช้งานโมดูลที่สามารถนำกลับมาใช้ใหม่เหล่านี้เป็นสิ่งจำเป็นสำหรับการพัฒนาอย่างมีประสิทธิภาพ และช่วยประหยัดเวลาอย่างมาก
Question 1
If you use import math, how must you call the sqrt function to calculate $\sqrt{25}$?
sqrt(25)
math.sqrt(25)
math::sqrt(25)
use math sqrt
Question 2
Which benefit of using modules addresses the issue of having multiple functions named process_data in a large application?
Code execution speed
Preventing Naming Collisions
Automatic debugging
Question 3
What happens to a module file the second time you attempt to import it in the same running program?
It is imported again, executing all top-level code.
The import fails with an error.
Python recognizes it is already loaded and skips execution.
Only variables are reloaded.